package com.wxg.ant.tmp;

import org.apache.tools.ant.Main;

/**
 * date: 2018年2月11日<br>
 * 1) {@link org.apache.tools.ant.Main#start(String[], java.util.Properties, ClassLoader)}
 * -	* 以上是入口方法 {@link Study20180211#code101()}, {@link Study20180211#code102()}
 * 2) method: runBuild; property: readyToRun<br>
 * -	* 搜索以上方法, 是继续探索的线索!
 * -	* 在`runBuild`方法中"finally"之前`project.executeTargets(targets);`是关键!
 * -		* build.xml文件就是由一个一个的"target"组成的!
 * -		* project.executeTargets(targets); 显然就是去执行所有target了
 * -	* 
 * 3) {@link org.apache.tools.ant.helper.AntXMLContext}
 * 4) {@link org.apache.tools.ant.util.JAXPUtils#getNamespaceXMLReader()}
 * 5) {@link org.apache.tools.ant.Project}
 * -	* {@link org.apache.tools.ant.Project#fireBuildStarted()}
 * -	* {@link org.apache.tools.ant.Project#fireBuildFinished(Throwable)}
 * 6) {@link org.apache.tools.ant.ProjectHelper}
 * 7) {@link org.apache.tools.ant.helper.ProjectHelper2}
 * 8) {@link org.apache.tools.ant.Target}
 * -	* "build.xml"就是由一个个"Target"组成的!
 * -	* {@link org.apache.tools.ant.Project} fireTargetStarted, fireTargetFinished
 * -	* {@link org.apache.tools.ant.Target#getDependencies()} : 获取依赖
 * 9) {@link org.apache.tools.ant.Task#perform()}
 * -	* {@link org.apache.tools.ant.Project} fireTaskStarted, fireTaskFinished
 * 
 * <br>
 * 1) [为什么JUC中大量使用了sun.misc.Unsafe 这个类，但官方却不建议开发者使用？](https://www.zhihu.com/question/29266773?sort=created)<br>
 * 
 * 
 * 
 * @author Wxg
 *
 */
public class Study20180211 {
	public static void main(String[] args) {
		// code101();
		code102();
	}
	
	/**
	 * date: 2018年2月11日<br>
	 * 每个参数都是数组中的一个元素, 如下:<br>
	 * `ant -f ...build.xml`<br>
	 * `new String[]{"-f", buildFilepath};`<br>
	 */
	public static void code102(){
		String buildFilepath = "F:\\wxg103\\AntStudy\\demo201712\\helloprops\\build.xml";
		String[] args = new String[]{"-f", buildFilepath};
		Main.start(args, null, null);
	}
	
	/**
	 * Add 2018年2月11日<br>
	 * {@link org.apache.tools.ant.Main#start(String[], java.util.Properties, ClassLoader)}<br>
	 * 
	 * Apache Ant(TM) version ${project.version} compiled on ${TODAY}
	 * `Apache Ant(TM) version 1.9.9 compiled on February 2 2017` 在cmd下运行`ant -version`得到
	 * 
	 */
	public static void code101(){
		String[] args = new String[]{"-version"};
		Main.start(args, null, null);
	}
}
